#pragma once

#ifdef FI_PLATFORM_WINDOWS
	#ifdef FI_BUILD_DLL
		#define FI_API __declspec(dllexport)
	#else
		#define FI_API __declspec(dllimport)
	#endif // FI_BUILD_DLL
#else
	#error Fairy Island Only Support Windows!
#endif // FI_PLATFORM_WINDOW

#ifdef FI_ENABLE_ASSERTS
	#define FI_ASSERT(x, ...) {if(!(x)) {FI_ERROR("Assertion Failed: {0}", __VA_ARGS__); __debugbreak();}}
	#define FI_CORE_ASSERT(x, ...) {if(!(x)) {FI_CORE_ERROR("Assertion Failed: {0}", __VA_ARGS__); __debugbreak();}}
#else
	#define FI_ASSERT(x, ...)
	#define FI_CORE_ASSERT(x, ...)
#endif // FI_ENABLE_ASSERTS


#define BIT(x) (1 << x)